home *** CD-ROM | disk | FTP | other *** search
- """findgremlins - Search through a folder and subfolders for
- text files that have characters with bit 8 set, and print
- the filename and a bit of context.
-
- By Just, with a little glue by Jack"""
-
- import macfs
- import re
- import os
- import string
- import sys
-
- xpat = re.compile(r"[\200-\377]")
-
- def walk(top, recurse=1):
- if os.path.isdir(top):
- if recurse:
- for name in os.listdir(top):
- path = os.path.join(top, name)
- walk(path)
- else:
- cr, tp = macfs.FSSpec(top).GetCreatorType()
- if tp == 'TEXT' and top[-4:] <> ".hqx":
- data = open(top).read()
- badcount = 0
- for ch in data[:256]:
- if ord(ch) == 0 or ord(ch) >= 0200:
- badcount = badcount + 1
- if badcount > 16:
- print `top`, 'appears to be a binary file'
- return
- pos = 0
- gotone = 0
- while 1:
- m = xpat.search(data, pos)
- if m is None:
- break
- if not gotone:
- print `top`
- gotone = 1
- [(i, j)] = m.regs
- print " ", string.replace(data[i-15:j+15], '\n', ' ')
- pos = j
-
- def main():
- fss, ok = macfs.GetDirectory()
- if ok:
- walk(fss.as_pathname())
-
- if __name__ == '__main__':
- main()
- sys.exit(1) # So we see the output
-
-